package com.cheng.gmall.item.aspect;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author Cheng-02
 * @version V1.0
 * @Package com.cheng.gmall.item.aspect
 * @date 2024/6/1 下午2:01
 */

// 定义自定义注解MallCache
@Target({ElementType.METHOD}) // 该注解可用于方法级别
@Retention(RetentionPolicy.RUNTIME) // 该注解在运行时可见
@Inherited // 该注解可被继承
@Documented // 该注解包含在Javadoc中
public @interface MallCache {
    /*
     * 指定缓存用的key  支持编写一个动态表达式
     *
     *
     * #{}内部的东西会被动态计算
     * #变量名：
     * 现在支持： #args   取出所有方法的参数
     * */
    String cacheKey() default ""; // 定义属性cacheKey，默认值为空字符串

    String bitMapName() default ""; // 定义属性bitMapName，默认值为空字符串

    /*
     * 指定位图中需要判定的值
     * */
    String bitMapKey() default ""; // 定义属性bitMapKey，默认值为空字符串

    String lockKey() default ""; // 定义属性lockKey，默认值为空字符串

    //数据的过期时间
    long ttl() default 1800L;

    //默认的时间的单位
    TimeUnit unit() default TimeUnit.SECONDS;

}
